"<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"x-ua-compatible\" content=\"ie=edge\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/apple-touch-icon.png\" />\n    <link\n      rel=\"icon\"\n      href=\"data:image/svg+xml;utf8,\n    <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 135.5 135.5'>\n      <path\n        d='M129.7 132.6V174h-23.1v-72.8h22v13.4h.8q2.4-6.7 8.2-10.5 5.9-3.8 14-3.8 7.6 0 13.2 3.4 5.7 3.5 8.8 9.6 3.2 6.1 3.2 14.3V174h-23.2v-41.8q0-6.1-3-9.5-3.2-3.4-8.7-3.4-3.6 0-6.4 1.6-2.7 1.6-4.3 4.5-1.4 3-1.5 7zm-84.7 0V174H22V77h22.4v37.6h.8q2.4-6.7 8-10.5 5.7-3.8 13.8-3.8 7.7 0 13.4 3.4 5.6 3.4 8.8 9.5 3.1 6.2 3 14.4V174h-23v-41.8q0-6.1-3.1-9.5-3-3.4-8.7-3.4-3.6 0-6.4 1.6-2.7 1.6-4.3 4.5-1.5 3-1.6 7z'\n        aria-label='hn'\n        transform='translate(-1 -19.2) scale(.69186)'\n      />\n    </svg>\n    \"\n    />\n    <link rel=\"mask-icon\" href=\"/safari-pinned-tab.svg\" color=\"#000000\" />\n    <meta name=\"msapplication-TileColor\" content=\"#ffffff\" />\n    <meta name=\"theme-color\" content=\"#ffffff\" />\n    <title>hndex.org</title>\n    <style>\n      :root {\n        --tx: #000000;\n        --bg: #ffffff;\n        --lk-1: #0070f3;\n        --lk-2: #0366d6;\n        --ac: #79ffe1;\n        --svg-inv: 0;\n      }\n      @media (prefers-color-scheme: dark) {\n        :root {\n          --tx: #ffffff;\n          --bg: #000000;\n          --lk-1: #3291ff;\n          --lk-2: #0070f3;\n          --ac: #7928ca;\n          --svg-inv: 1;\n        }\n      }\n\n      html {\n        font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto,\n          Oxygen, Ubuntu, Cantarell, \"Open Sans\", \"Helvetica Neue\", sans-serif;\n        background: var(--bg);\n        color: var(--tx);\n        max-width: 500px;\n        padding: 10px;\n        margin: 0 auto;\n      }\n\n      ::selection {\n        background: var(--ac);\n        color: var(--tx);\n      }\n\n      a {\n        color: var(--lk-1);\n      }\n      a:hover {\n        color: var(--lk-2);\n      }\n\n      h3,\n      h5 {\n        text-align: center;\n        margin: 0 auto 0 auto;\n      }\n\n      body {\n        display: flex;\n        flex-direction: column;\n        justify-content: center;\n        align-items: center;\n      }\n\n      svg {\n        margin: 1rem auto 1rem auto;\n        max-width: 200px;\n        filter: invert(var(--svg-inv));\n      }\n\n      .redirect {\n        font-weight: 300;\n        text-align: center;\n        margin: 0 auto 0 auto;\n      }\n\n      .no-wrap {\n        white-space: nowrap;\n        word-break: keep-all;\n      }\n\n      .hn {\n        font-weight: 700;\n      }\n      .dex {\n        font-weight: 300;\n      }\n    </style>\n  </head>\n  <body>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 352.1 98.5\">\n      <path\n        d=\"m327.6 100.6 21.4 33.6 21.4-33.6h3.6l-23.2 36.3 23.2 36.4h-3.6L349 139.7l-21.4 33.6H324l23.2-36.4-23.2-36.3zM288 174.8q-9.5 0-16.7-5-7.1-5-11-13.4-4-8.6-4-19.3 0-10.7 4-19.2t10.8-13.5q6.8-5 15.4-5 6.3 0 11.7 2.7 5.4 2.7 9.5 7.5 4 4.8 6.2 11 2.3 6.3 2.3 13.3v3h-58.3v-3h55.3q0-8.7-3.6-15.8-3.6-7.2-9.7-11.4-6-4.2-13.4-4.2-7.5 0-13.6 4.4-6 4.5-9.7 12.1-3.6 7.7-3.8 17.4v.4q0 9.5 3.3 17.5t9.7 12.7q6.4 4.8 15.6 4.8 6.7 0 11.2-2.4 4.6-2.3 7.4-5.4 2.8-3.1 4.1-5.3l2.5 1.7q-1.7 2.8-4.9 6.1-3.2 3.4-8.2 5.9-5 2.4-12.1 2.4zm-76.2 0q-8.6 0-15-4.9-6.2-5-9.6-13.5-3.5-8.5-3.5-19.3 0-10.7 3.5-19.2t9.8-13.5q6.3-5 14.8-5 5.8 0 10.6 2.5 5 2.3 8.5 6.8 3.6 4.4 5.5 10.4h.4V76.3h3v97h-3v-18.2h-.4q-2 6-5.5 10.5-3.6 4.4-8.5 6.8-4.8 2.4-10.6 2.4zm0-3q7.7 0 13.3-4.6 5.6-4.5 8.6-12.4 3-7.8 3-17.7 0-9.8-3-17.6-3-7.9-8.7-12.4-5.6-4.6-13.2-4.6-7.7 0-13.3 4.6-5.6 4.5-8.7 12.4-3 7.8-3 17.6 0 9.9 3 17.7 3 7.9 8.6 12.4 5.7 4.6 13.4 4.6zm-82-39.2V174h-23.2v-72.8h22v13.4h.8q2.4-6.7 8.2-10.5 5.9-3.8 14-3.8 7.6 0 13.2 3.4 5.7 3.5 8.8 9.6 3.2 6.1 3.2 14.3V174h-23.2v-41.8q0-6.1-3-9.5-3.2-3.4-8.7-3.4-3.6 0-6.4 1.6-2.7 1.6-4.3 4.5-1.4 3-1.5 7zm-84.8 0V174H22V77h22.4v37.6h.8q2.4-6.7 8-10.5 5.7-3.8 13.8-3.8 7.7 0 13.4 3.4 5.6 3.4 8.8 9.5 3.1 6.2 3 14.4V174h-23v-41.8q0-6.1-3.1-9.5-3-3.4-8.7-3.4-3.6 0-6.4 1.6-2.7 1.6-4.3 4.5-1.5 3-1.6 7z\"\n        aria-label=\"hndex\"\n        transform=\"translate(-21.9 -76.3)\"\n      />\n    </svg>\n\n    <main>\n      <h3>Goodbye, for now.</h3>\n      <h5>Thanks for the fun!</h5>\n      <p>\n        <span class=\"hn\">hn</span><span class=\"dex\">dex</span> was a site to\n        search the full-text of articles submitted to\n        <a href=\"https://news.ycombinator.com\">Hacker News</a>. It served as my\n        test bed to play around with data structures and algorithms related to\n        inverted indexes. I explored the problem through the lens of linear\n        algebra and found some interesting ways to compress its sparse boolean\n        matrices. The site used no JavaScript and aimed to serve a page of\n        search results in under 100 μs on a $10/mo VPS.\n      </p>\n      <p>\n        I'm retiring this project. I don't actually know if anyone is here (no\n        logging <code>¯\\_(ツ)_/¯</code>). It's been a fun hobby and a great\n        learning experience. Perhaps someday I'll write up a retrospective and\n        share its story. Reach out via\n        <a href=\"/cdn-cgi/l/email-protection#036b6d67667b43686a746a796a776a2d606c6e\">email</a> or connect with\n        <a href=\"https://github.com/mcovalt\">me on GitHub</a> to get in touch.\n      </p>\n    </main>\n    <div class=\"redirect\">\n      Coming from a URL ending with a number?\n      <br />\n      <small>\n        <a class=\"no-wrap\" href=\"https://hndex.org/24079592\"\n          >hndex.org/<b>24079592</b></a\n        >\n        <span class=\"no-wrap\"\n          >→\n          <a href=\"https://news.ycombinator.com/item?id=24079592\"\n            >news.ycombinator.com/item?id=<b>24079592</b></a\n          ></span\n        >\n      </small>\n    </div>\n  <script data-cfasync=\"false\" src=\"/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js\"></script></body>\n</html>\n"